package ar.edu.unq.model;

import ar.edu.unq.exceptions.EquipoIncompletoException;

/**
 * Representa un Tecnico
 * 
 * @author Nicolas Faure
 */
public class Tecnico implements Nombrable {

    private FormacionStrategy formacionStrategy;

    private String nombre;

    private int id;

    public Tecnico() {
    }

    public Tecnico(final String nombre, final FormacionStrategy formacionStrategy) {
        this.setFormacionStrategy(formacionStrategy);
        this.setNombre(nombre);
    }

    /**
     * Delega en el Strategy el armado de la formacion del equipo
     * 
     * @author Nicolas Faure
     * @throws EquipoIncompletoException
     */
    public Formacion armarFormacion(final Equipo equipo) {
        return this.getFormacionStrategy().armarFormacion(equipo);
    }

    // Getters & Setters

    private void setNombre(final String nombre) {
        this.nombre = nombre;
    }

    public String getNombre() {
        return this.nombre;
    }

    public void setFormacionStrategy(final FormacionStrategy formacion) {
        this.formacionStrategy = formacion;
    }

    public FormacionStrategy getFormacionStrategy() {
        return this.formacionStrategy;
    }

    public int getId() {
        return this.id;
    }

    public void setId(final int id) {
        this.id = id;
    }

}
